// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov  Date: 2007-9-15 18:54:30


// Source File Name:   um.java

package com.zelix;

import java.util.Vector;


//            tg, wb, wn, lt, 
//            fy, jy, zu

public final class um
{

    private tg a;
    private fy b;
    private static String z[];

    public um(tg tg1)
    {
        b = new fy();
        a = tg1;
    }

    private boolean a(String s, String s1)
        throws wb
    {
        int i = s.lastIndexOf("[") + 1;
        int j = s1.lastIndexOf("[") + 1;
        String s2 = s.substring(i);
        String s3 = s1.substring(j);
        if(i < j)
            return false;
        if(i > j)
            return s3.equals(z[0]);
        if(s2.length() == 1 && s3.length() == 1)
            return s2.equals(s3);
        if(s2.length() == 1 || s3.length() == 1)
            return false;
        else
            return b(s2, s3);
    }

    boolean a(wn wn1, wn wn2)
        throws wb
    {
        return b(wn1.d(), wn2.d());
    }

    public boolean b(String s, String s1)
        throws wb
    {
        if(s.equals(s1))
            return true;
        s = a(s);
        s1 = a(s1);
        lt lt1 = null;
        lt lt2 = null;
        if(s.charAt(0) == '[')
        {
            if(s1.charAt(0) == '[')
                return a(s, s1);
            lt2 = a.a(s1);
            if(lt2.E())
                return s1.equals(z[2]);
            else
                return s1.equals(z[1]);
        }
        if(s1.charAt(0) == '[')
            return false;
        lt1 = a.a(s);
        lt2 = a.a(s1);
        if(lt1.E())
            if(lt2.E())
                return c(s, lt1, s1, lt2);
            else
                return s1.equals(z[1]);
        if(lt2.E())
            return c(s, lt1, s1, lt2);
        else
            return a(s, lt1, s1, lt2);
    }

    public void a()
    {
        b.a();
    }

    public boolean c(String s, String s1)
        throws wb
    {
        if(s.equals(s1))
            return true;
        if(s.length() > 1 && s1.length() > 1)
            return b(s, s1);
        if(s.length() == 1 && s1.length() == 1)
        {
            char c1 = s.charAt(0);
            char c2 = s1.charAt(0);
            switch(c1)
            {
            case 66: // 'B'
                return c2 == 'B' || c2 == 'C' || c2 == 'I' || c2 == 'J';

            case 90: // 'Z'
                return c2 == 'Z';

            case 67: // 'C'
                return c2 == 'C' || c2 == 'I' || c2 == 'J';

            case 83: // 'S'
                return c2 == 'S' || c2 == 'I' || c2 == 'J';

            case 73: // 'I'
                return c2 == 'I' || c2 == 'J';

            case 74: // 'J'
                return c2 == 'J';

            case 70: // 'F'
                return c2 == 'F' || c2 == 'D';

            case 68: // 'D'
                return c2 == 'D';

            case 86: // 'V'
                return c2 == 'V';

            case 69: // 'E'
            case 71: // 'G'
            case 72: // 'H'
            case 75: // 'K'
            case 76: // 'L'
            case 77: // 'M'
            case 78: // 'N'
            case 79: // 'O'
            case 80: // 'P'
            case 81: // 'Q'
            case 82: // 'R'
            case 84: // 'T'
            case 85: // 'U'
            case 87: // 'W'
            case 88: // 'X'
            case 89: // 'Y'
            default:
                return false;
            }
        } else
        {
            return false;
        }
    }

    boolean a(String s, lt lt1, String s1, lt lt2)
        throws wb
    {
        if(s.equals(s1))
        {
            return true;
        } else
        {
            Vector vector = lt1.b(a);
            return vector.contains(s1);
        }
    }

    String c(String s, String s1)
        throws wb
    {
        int i;
        String s2;
        String s3;
label0:
        {
            int j;
            String s4;
label1:
            {
                i = s.lastIndexOf("[") + 1;
                j = s1.lastIndexOf("[") + 1;
                s2 = s.substring(i);
                s3 = s1.substring(j);
                if(i == j)
                    break label0;
                if(i < j)
                {
                    s4 = s2;
                    if(!wn.C)
                        break label1;
                }
                s4 = s3;
            }
            if(s4.startsWith("L") && s4.endsWith(";"))
                return zu.a("", 'L', Math.min(i, j), '[') + z[0];
            else
                return zu.a("", 'L', Math.min(i, j) - 1, '[') + z[0];
        }
        if(s2.length() == 1 && s3.length() == 1)
            if(s2.equals(s3))
                return s;
            else
                return z[0];
        if(s2.length() == 1 || s3.length() == 1)
        {
            return z[0];
        } else
        {
            String s5 = d(s2, s3);
            return zu.a(s5, 'R', s5.length() + i, '[');
        }
    }

    private String b(String s, lt lt1, String s1, lt lt2)
        throws wb
    {
        String s2;
        jy jy1;
        jy jy2;
        int i;
        int j;
        boolean flag;
        flag = wn.C;
        s2 = null;
        jy1 = lt1.a(a);
        jy2 = lt2.a(a);
        i = jy1.size();
        if(lt1.E() && jy2.containsKey(s))
            s2 = b(s);
        if(s2 == null && lt2.E() && jy1.containsKey(s1))
            s2 = b(s1);
        if(s2 != null)
            break MISSING_BLOCK_LABEL_156;
        j = 0;
        if(!flag) goto _L2; else goto _L1
_L1:
        String s3 = (String)jy1.a(j);
        if(jy2.a(s3) == -1)
            continue; /* Loop/switch isn't completed */
        s2 = b(s3);
        if(!flag)
            break; /* Loop/switch isn't completed */
        j++;
_L2:
        if(j < i) goto _L1; else goto _L3
_L3:
        if(s2 == null)
            s2 = z[0];
        return s2;
    }

    String b(wn wn1, wn wn2)
        throws wb
    {
        return d(wn1.d(), wn2.d());
    }

    String d(String s, String s1)
        throws wb
    {
        String s2;
        lt lt1;
        lt lt2;
        String s3;
        String s4;
        Vector vector;
        Vector vector1;
        int i;
        int j;
        boolean flag;
        flag = wn.C;
        if(s.equals(s1))
            return s;
        s2 = (String)b.b(s, s1);
        if(s2 != null)
            return s2;
        lt1 = null;
        lt2 = null;
        s3 = a(s);
        s4 = a(s1);
        if(s3.charAt(0) == '[')
        {
            if(s4.charAt(0) == '[')
            {
                s2 = c(s3, s4);
                if(!flag)
                    break MISSING_BLOCK_LABEL_439;
            }
            lt2 = a.a(s4);
            if(lt2.E())
            {
                if(s4.equals(z[2]))
                {
                    s2 = z[3];
                    if(!flag)
                        break MISSING_BLOCK_LABEL_439;
                }
                s2 = z[0];
                if(!flag)
                    break MISSING_BLOCK_LABEL_439;
            }
            s2 = z[0];
            break MISSING_BLOCK_LABEL_439;
        }
        if(s4.charAt(0) == '[')
        {
            lt1 = a.a(s3);
            if(lt1.E())
            {
                if(s3.equals(z[2]))
                {
                    s2 = z[3];
                    if(!flag)
                        break MISSING_BLOCK_LABEL_439;
                }
                s2 = z[0];
                if(!flag)
                    break MISSING_BLOCK_LABEL_439;
            }
            s2 = z[0];
            break MISSING_BLOCK_LABEL_439;
        }
        lt1 = a.a(s3);
        lt2 = a.a(s4);
        if(lt1.E() || lt2.E())
        {
            s2 = b(s3, lt1, s4, lt2);
            if(!flag)
                break MISSING_BLOCK_LABEL_439;
        }
        vector = lt1.b(a);
        vector1 = lt2.b(a);
        i = vector.size();
        if(vector1.contains(s3))
        {
            s2 = b(s3);
            if(!flag)
                break MISSING_BLOCK_LABEL_439;
        }
        if(vector.contains(s4))
        {
            s2 = b(s4);
            if(!flag)
                break MISSING_BLOCK_LABEL_439;
        }
        j = 0;
        if(!flag) goto _L2; else goto _L1
_L1:
        String s5 = (String)vector.elementAt(j);
        if(vector1.indexOf(s5) == -1)
            continue; /* Loop/switch isn't completed */
        s2 = b(s5);
        if(!s2.equals(z[0]))
            break; /* Loop/switch isn't completed */
        s2 = b(s3, lt1, s4, lt2);
        if(!flag)
            break; /* Loop/switch isn't completed */
        j++;
_L2:
        if(j < i) goto _L1; else goto _L3
_L3:
        if(s2 == null)
            s2 = z[0];
        b.b(s, s1, s2);
        b.b(s1, s, s2);
        return s2;
    }

    boolean c(String s, lt lt1, String s1, lt lt2)
        throws wb
    {
        if(s.equals(s1))
        {
            return true;
        } else
        {
            jy jy1 = lt1.a(a);
            return jy1.containsKey(s1);
        }
    }

    boolean a(wn wn1)
        throws wb
    {
        String s = a(wn1.d());
        if(s.charAt(0) == '[')
        {
            return false;
        } else
        {
            lt lt1 = a.a(s);
            return lt1.E();
        }
    }

    public static String a(String s)
    {
        int i = s.length();
        if(s.charAt(0) == 'L' && s.charAt(i - 1) == ';')
            s = s.substring(1, i - 1);
        return s;
    }

    public static String b(String s)
    {
        if(s.charAt(s.length() - 1) != ';')
            return 'L' + s + ';';
        else
            return s;
    }
                 private static String z(char[] chs) {
        for (int i = 0; i < chs.length; i++) {
            byte key = 0;
            switch (i % 5) {
                case 0:
                    key = 0x63;
                    break;
                case 1:
                    key = 89;
                    break;
                case 2:
                    key = 13;
                    break;
                case 3:
                    key = 88;
                    break;
                default:
                    key = 79;
                    break;
            }
            chs[i] ^= key;
        }
        return new String(chs).intern();
    }
    static 
    {
        String as[];
        as = new String[4];
        as[0] = "/3l..L5l6(L\026o2*\000-6";
        as[1] = "\t8{9`\0178c?`,;g=,\027";
        as[2] = "\t8{9`\0178c?` 5b6*\002;a=";
        as[3] = "/3l..L5l6(L\032a7!\0068o4*X";
        for (int i = 0; i < as.length; i++) {
            as[i] = z(as[i].toCharArray());
        }
        z = as;

    }
}